package com.homework.phase1.module4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.net.ServerSocket;
import java.net.Socket;

//  使用基于 tcp 协议的编程模型实现将 UserMessage 类型对象由客户端发送给服务器；
//
//  服务器接收到对象后判断用户对象信息是否为"admin" 和 "123456"， 若 是则 将 UserMessage 对象中的类型改为"success"，
//  否则将类型改为"fail"并回发给客户端，客户 端接收到服务器发来的对象后判断并给出登录成功或者失败的提示。
//
//  其中 UserMessage 类的特征有：类型(字符串类型) 和 用户对象(User 类型)。
//
//  其中 User 类的特征有：用户名、密码(字符串类型)。
//
//  如：
//
//                UserMessage tum = new UserMessage("check", new User("admin", "123456"));
public class ServerCheck {
    public static void main(String[] args) {
        ServerSocket ss = null;
        Socket s = null;
        PrintStream ps = null;
        BufferedReader br = null;
        try {
            ss = new ServerSocket(6666);

            System.out.println("等待客户端请求");

            s = ss.accept();
            System.out.println("客户端连接成功");

            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            String str = br.readLine();
            System.out.println(str);

            String[] strArr = str.split(" ");

            ps = new PrintStream(s.getOutputStream());

            System.out.println(strArr[1]);
            System.out.println(strArr[2]);
            if( "admin".equals(strArr[1]) && "123456".equals(strArr[2])) {

                ps.println(new UserMessage("success",new User(strArr[1],strArr[2])));
            }else {

                ps.println(new UserMessage("fail",new User(strArr[1],strArr[2])));
            }
            System.out.println("服务器回发数据成功");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != ps) {
                ps.close();
            }
            if (null != ss) {
                try {
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}
